home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 051-060 / amok52 / gadgeted / txt / gadgets.def < prev    next >
Text File  |  1993-11-04  |  13KB  |  295 lines

  1. (*----------------------------------------------------------------------
  2.   :Program.    Gadgets.def
  3.   :Contents.   Aufbau und Verwaltung von Gadgets
  4.   :Author.     Hubert Bildstein
  5.   :Address.    Gehenbühlstr.5, W7000 Stuttgart 31, Germany
  6.   :Copyright.  Public Domain
  7.   :Language.   Modula-2
  8.   :Translator. M2Amiga V3.3d
  9.   :History.    V1.0   6.12.1990
  10.   :Remark.     Evtl. Namensgleichheit mit schon vorhandenen Modulen
  11.   :Remark.     ist zufällig
  12. ----------------------------------------------------------------------*)
  13.  
  14. DEFINITION MODULE Gadgets;
  15.  
  16. (*--------------------------------------------------------------------------*)
  17. (* Prozeduren zur Behandlung von String-, Boolean- und ProportionalGadgets  *)
  18. (*                                                                          *)
  19. (* Datum: 26.07.90                   letzte Änderung: 06.12.1990            *)
  20. (* Autor: Hubert Bildstein                                                  *)
  21. (* Compiler: M2Amiga V3.3d                                                  *)
  22. (*--------------------------------------------------------------------------*)
  23.  
  24. (* Anmerkungen:
  25.    ------------
  26.  
  27.    Zuallererst muß DefineWindow ausgeführt werden!
  28.  
  29.    GadgetIDs müssen positiv ( >=0 )sein.
  30.  
  31.    zu MakePropGadget: GadgetFlagSet wird auf {} gesetzt. Der Rahmen wird
  32.       automatisch gezeichnet, Änderung mit GadgetBorder und DeleteBorder
  33.       hat absolut keine Wirkung.
  34.  
  35.    String- und Boolean-Gadgets werden ohne Rahmen und Text generiert. Dies
  36.    muß danach mit GadgetBorder und GadgetText erfolgen.
  37.  
  38.    Um ein LONGINT-String-Gadget zu erzeugen, muß im ActivationFlagSet für
  39.    ein String-Gadget der Eintrag "longint" enthalten sein.
  40.  
  41.    StringGadgets und Gadget-Texte sind auf 255 Zeichen beschränkt.
  42.  
  43.    !! Wird einem Gadget, das bereits einen Text oder Rahmen besitzt, mit
  44.       GadgetText oder GadgetBorder erneut ein Text oder Rahmen zugewiesen
  45.       oder mit DeleteText oder DeleteBorder ein ebensolcher gelöscht,
  46.       so muß dieses Gadget von diesem Modul hier erstellt worden sein,
  47.       ansonsten kann das Programm abstürzen.
  48.  
  49.       Wird ein Gadget mit DeleteGadget gelöscht, so muß es ebenfalls von
  50.       diesem Modul erstellt worden sein, sonst ist ein Absturz sicher!!
  51.  
  52. *)
  53.  
  54. FROM Intuition IMPORT GadgetPtr, WindowPtr, GadgetFlagSet,
  55.                       ActivationFlagSet, IDCMPFlagSet;
  56.  
  57. TYPE PropType = (Horiz, Vert);            (* Bestimmt Art der Prop.-Gadgets *)
  58.      PropTypeSet = SET OF PropType;
  59.  
  60. (*--------------------------------------------------------------------------*)
  61.  
  62. PROCEDURE DefineWindow (GWindow : WindowPtr);
  63. (* Legt fest, auf welches Window sich die Gadget-Operationen beziehen sollen.
  64.    Bevor irgendeine andere Prozedur aufgerufen werden kann, muß das Window
  65.    hiermit festgelegt werden!
  66. *)
  67.  
  68. (*--------------------------------------------------------------------------*)
  69.  
  70. PROCEDURE MakeStrGadget (VAR GPtr       : GadgetPtr;
  71.                              GadgID     : INTEGER;
  72.                              x, y       : INTEGER;
  73.                              w, h       : INTEGER;
  74.                              MaxChars   : INTEGER;
  75.                              Flags      : GadgetFlagSet;
  76.                              AFlags     : ActivationFlagSet;
  77.                          VAR ok         : BOOLEAN);
  78. (* Erstellen eines String-/Longint-Gadgets im angegebenen Window
  79.    Parameter:   GPtr      : GadgetPtr, wird zurückgegeben
  80.                 GadgID    : Nummer des Gadgets
  81.                 x,y       : Position des Gadgets im Window (in Pixel)
  82.                 w         : Breite    "     "                  "
  83.                 h         : Höhe      "     "                  "
  84.                 MaxChars  : Max. Anzahl der einzugebenden Zeichen
  85.                 Flags     : siehe Intuition
  86.                 AFlags    :   "      "
  87.                 ok        : TRUE : ok; FALSE : Fehler
  88.    Fehlerursachen: GadgID,x,y,w,h,MaxEingabe<0, kein Window def.
  89. *)
  90.  
  91. (*--------------------------------------------------------------------------*)
  92.  
  93. PROCEDURE MakeBoolGadget (VAR GPtr       : GadgetPtr;
  94.                               GadgID     : INTEGER;
  95.                               x, y       : INTEGER;
  96.                               w, h       : INTEGER;
  97.                               Flags      : GadgetFlagSet;
  98.                               AFlags     : ActivationFlagSet;
  99.                           VAR ok         : BOOLEAN);
  100. (* Erstellen eines BooleanGadgets im angegebenen Window
  101.    Parameter:   GPtr      : GadgetPtr, wird zurückgegeben
  102.                 GadgID    : Nummer des Gadgets
  103.                 x,y       : Position des Gadgets im Window (in Pixel)
  104.                 w         : Breite    "     "                  "
  105.                 h         : Höhe      "     "                  "
  106.                 Flags     : siehe Intuition
  107.                 AFlags    :   "      "
  108.                 ok        : TRUE : ok; FALSE : Fehler
  109.    Fehlerursachen: GadgID,x,y,w,h<0, kein Window def.
  110. *)
  111.  
  112. (*--------------------------------------------------------------------------*)
  113.  
  114. PROCEDURE MakePropGadget (VAR GPtr      : GadgetPtr;
  115.                               GadgID    : INTEGER;
  116.                               x, y      : INTEGER;
  117.                               w, h      : INTEGER;
  118.                               AFlags    : ActivationFlagSet;
  119.                               Type      : PropTypeSet;
  120.                               HSteps    : CARDINAL;
  121.                               VSteps    : CARDINAL;
  122.                           VAR ok        : BOOLEAN);
  123. (* Erzeugt ein Proportional-Gadget im angegebenen Window
  124.    Parameter:  GPtr      : GadgetPtr, wird zurückgegeben
  125.                GadgID    : Nummer des Gadgets
  126.                x,y       : Position des Gadgets im Window
  127.                w         : Breite    "     "
  128.                h         : Höhe     "     "
  129.                AFlags    : siehe Intuition
  130.                Type      : Vert : vertikal beweglich
  131.                            Horiz : horizontal beweglich
  132.                            beide gesetzt : 2-dimensional beweglich
  133.                HSteps    : Gibt an, in wieviel Schritte die horizontale
  134.                            Richtung unterteilt ist (2 .. 65535).
  135.                VSteps    : wie oben, vertikal
  136.    Fehlerursachen: GadgID,x,y,w,h<0, Typ = {}, kein Window def.
  137. *)
  138.  
  139. (*--------------------------------------------------------------------------*)
  140.  
  141. PROCEDURE DeleteGadget (VAR GPtr : GadgetPtr);
  142. (* Löschen eines Gadgets aus der Windowliste und aus dem Speicher.
  143.    Neuaufbau des Fensters muß selbst erledigt werden.
  144.    !ACHTUNG! Das Gadget muß von diesem Modul erstellt worden sein,
  145.    sonst ist ein Absturz fast sicher!
  146.    Parameter:  GPtr : Zeiger auf zu löschendes Gadget
  147. *)
  148.  
  149. (*--------------------------------------------------------------------------*)
  150.  
  151. PROCEDURE WaitForGadget (VAR class : IDCMPFlagSet;
  152.                          VAR ID    : INTEGER;
  153.                          VAR GPtr  : GadgetPtr);
  154. (* Warten auf Message vom Window, evtl. wird Nummer des aktivierten Gadgets
  155.    und der GadgetPtr zurückgegeben.
  156.    Parameter:   class  : gibt Art der Message zurück (z.B. für Auswertung
  157.                          von closeWindow ...)
  158.                 ID     : Nummer des aktivierten Gadgets. Falls kein Gadget
  159.                          aktiviert wurde, wird ID zu -1
  160.                 GPtr   : GadgetPtr des aktivierten Gadgets. NIL bei anderer
  161.                          Message.
  162.    Bei Fehler ist class = {}
  163. *)
  164.  
  165. (*--------------------------------------------------------------------------*)
  166.  
  167. PROCEDURE GadgetText (GPtr       : GadgetPtr;
  168.                       relX, relY : INTEGER;
  169.                       Text       : ARRAY OF CHAR;
  170.                       fPen, bPen : INTEGER);
  171. (* Fügt einem Gadget einen Text an. Ein evtl. vorher bestehender Text wird
  172.    dabei gelöscht.
  173.    Parameter:   GPtr       : Zeiger auf Gadget
  174.                 relX, relY : Position des Textes rel. zum Gadget (in Pixel)
  175.                 Text       : Text
  176.                 fPen, bPen : Vorder/ Hintergrundfarbe des Textes
  177.    Bei Fehler wird nichts ausgeführt, keine Rückmeldung
  178. *)
  179.  
  180. (*--------------------------------------------------------------------------*)
  181.  
  182. PROCEDURE DeleteText (GPtr : GadgetPtr);
  183. (* Löschen des Textes eines Gadgets und Freigabe des Speichers.
  184.    Parameter:   GPtr : Zeiger auf Gadget
  185. *)
  186.  
  187. (*--------------------------------------------------------------------------*)
  188.  
  189. PROCEDURE GadgetBorder (GPtr         : GadgetPtr;
  190.                         relX, relY   : INTEGER;
  191.                         w, h         : INTEGER;
  192.                         Double       : BOOLEAN;
  193.                         xDist, yDist : INTEGER;
  194.                         Colour       : INTEGER);
  195. (* versieht Gadget mit einem einfachen/doppelten Rahmen.
  196.    Nicht für Proportional-Gadgets.
  197.    Parameter:   GPtr         : Zeiger auf Gadget
  198.                 WPtr         :    "    "  Window
  199.                 relX, relY   : Pos. des Rahmens rel. zum Gadget (in Pixel)
  200.                 w            : Breite des Rahmens (in Pixel)
  201.                 h            : Höhe   "    "         "
  202.                 Double       : TRUE = Doppelrahmen, FALSE = einfacher Rahmen
  203.                 xDist, yDist : Falls Double = TRUE: Abstand zum zweiten Rahmen
  204.                                sonst: keine Bedeutung
  205.                 Colour       : Farbe des Rahmens
  206.    Bei Fehler wird nichts ausgeführt, keine Rückmeldung
  207. *)
  208.  
  209. (*--------------------------------------------------------------------------*)
  210.  
  211. PROCEDURE DeleteBorder (GPtr : GadgetPtr);
  212. (* Löschen des Gadget-Rahmens und Freigabe dessen Speichers.
  213.    Nicht für Proportional-Gadgets.
  214.    Parameter:   GPtr : Zeiger auf Gadget
  215. *)
  216.  
  217. (*--------------------------------------------------------------------------*)
  218.  
  219. PROCEDURE ReadStrGadget (    GPtr : GadgetPtr;
  220.                          VAR Str  : ARRAY OF CHAR);
  221. (* Liest das angegebenen StringGadget aus und gibt den Inhalt zurück
  222.    Parameter:   GPtr   : Zeiger auf Gadget
  223.                 Str    : Inhalt des StringGadgets
  224. *)
  225.  
  226. (*--------------------------------------------------------------------------*)
  227.  
  228. PROCEDURE SetStrGadget (GPtr       : GadgetPtr;
  229.                         Buffer     : ARRAY OF CHAR);
  230. (* Belegt den Inhalt eines StringGadgets mit der angebenen Zeichenkette.
  231.    Parameter:    GPtr       : Zeiger auf Gadget
  232.                  Buffer     : neuer Inhalt
  233. *)
  234.  
  235. (*--------------------------------------------------------------------------*)
  236.  
  237. PROCEDURE ReadLongint (    GPtr  : GadgetPtr;
  238.                        VAR Value : LONGINT);
  239. (* Liest den Inhalt eines LONGINT-String-Gadgets aus.
  240.    Parameter:    GPtr  : Zeiger auf Gadget
  241.                  Value : ausgelesener Wert
  242. *)
  243. (*--------------------------------------------------------------------------*)
  244.  
  245. PROCEDURE SetLongint (GPtr  : GadgetPtr;
  246.                       Value : LONGINT);
  247. (* Setzt den Inhalt eines LONGINT-String-Gadgets auf den angegebenen Wert.
  248.    Parameter:    GPtr  : Zeiger auf Gadget
  249.                  Value : Zu setzender Wert
  250. *)
  251.  
  252. (*--------------------------------------------------------------------------*)
  253.  
  254. PROCEDURE ReadPropGadget (    GPtr    : GadgetPtr;
  255.                           VAR xValue  : CARDINAL;
  256.                           VAR yValue  : CARDINAL);
  257. (* Liest die Stellung der Schieberegler aus.
  258.    Parameter:  GPtr    : Zeiger auf PropGadget
  259.                xValue  : Stellung des Gadgets horizontal (0..HSteps-1)
  260.                yValue  :    "      "     "    vertikal   (0..VSteps-1)
  261. *)
  262.  
  263. (*--------------------------------------------------------------------------*)
  264.  
  265. PROCEDURE SetPropGadget (GPtr    : GadgetPtr;
  266.                          xValue  : CARDINAL;
  267.                          yValue  : CARDINAL);
  268. (* Setzen eines Proportional-Gadgets auf einen bestimmten Wert.
  269.    Parameter:  GPtr   : Zeiger auf PropGadget
  270.                xValue : Wert zwischen 0 und HSteps-1
  271.                yValue :  "     "      0 und VSteps-1
  272. *)
  273.  
  274. (*--------------------------------------------------------------------------*)
  275.  
  276. PROCEDURE ReadToggleSelect (    GPtr     : GadgetPtr;
  277.                             VAR Selected : BOOLEAN);
  278. (* Abfragen eines ToggleSelect-Boolean-Gadgets.
  279.    Parameter:  GPtr     : Zeiger auf Gadget
  280.                Selected : TRUE = angewählt, FALSE = nicht angewählt
  281. *)
  282.  
  283. (*--------------------------------------------------------------------------*)
  284.  
  285. PROCEDURE SetToggleSelect (GPtr   : GadgetPtr;
  286.                            Select : BOOLEAN);
  287. (* Setzen eines ToggleSelect-Boolean-Gadgets.
  288.    Parameter:  GPtr   : Zeiger auf Gadget
  289.                Select : TRUE = anwählen, FALSE = ausschalten
  290. *)
  291.  
  292. (*--------------------------------------------------------------------------*)
  293.  
  294. END Gadgets.
  295.